package com.yonyou.pmclouds.plan.rmiitf;

import com.yonyou.pmclouds.basecom.exception.BusinessException;
import com.yonyou.pmclouds.plan.entity.PlanProgressVO;
import com.yonyou.pmclouds.plan.entity.ProjectScheduleBoardVO;
import com.yonyou.pmclouds.plan.entity.ScheduleVO;

public interface IScheduleProgressCalculateService {

    /**
     * 计算计划和子表任务项时间与进度
     * @param scheduleVOS 计划数据
     * @param planProgressVOS 新填报的计划进度
     * @return 计算完成后的计划数据
     */
    ScheduleVO[] calculate(ScheduleVO[] scheduleVOS, PlanProgressVO[] planProgressVOS) throws BusinessException;

    /**
     * 根据子表任务项计算主表计划的时间和进度，不计算子表任务项
     * @param scheduleVOS 计划数据
     * @return 计算完成后的计划数据
     */
    ScheduleVO[] calculate(ScheduleVO[] scheduleVOS) throws BusinessException;

    /**
     * 计算项目的计划进度和时间
     * @param scheduleBoardVOS 该项目下的所有计划信息
     * @return 项目计划报表
     */
    ProjectScheduleBoardVO[] calculate(ProjectScheduleBoardVO[] scheduleBoardVOS) throws BusinessException;
}
